package org.opens.net.util;

import org.opens.byteBuffer.ByteBufferUtil;

import java.nio.ByteBuffer;

public class MyByteBufferUtil {

    public static void split(ByteBuffer source) {
        // 切换读模式
        source.flip();

        for (int i = 0; i < source.limit(); i++) {
            // 找到换行符表示找到一条完整消息
            //log.info("判断结果: {}", source.get(i) == '\n');
            if (source.get(i) == '\n') {
                int len = i  + 1 - source.position();
                // 把这条完整消息存入新的ByteBuffer
                ByteBuffer target = ByteBuffer.allocate(len);
                // 从source读, 向target写
                for (int j = 0; j < len; j++) {
                    // 注意不要写成get(j), 否则会导致position不变化
                    target.put(source.get());
                }
                ByteBufferUtil.debugAll(target);
            }
        }

        // 切换写模式
        source.compact();
    }

}
